

OBJ=obj
SRC=src
EXE=bin
CPPFLAGS=-c -g -O0 -std=c++11
LDFLAG=-std=c++11 -L./ -lleetcode
CXX=g++

SRCFILES=
OBJFILES=$(OBJ)/maxProduct.o \
         $(OBJ)/isMatch.o \
         $(OBJ)/binaryTree.o \
         $(OBJ)/binarySearchTree.o \
         $(OBJ)/maxDistance.o \
         $(OBJ)/preOrderInOrderBinaryTree.o \
         $(OBJ)/partition.o \
         $(OBJ)/cycleLinkedList.o \
         $(OBJ)/wordBreak.o \
         $(OBJ)/twoArrayMedian.o \
         $(OBJ)/longestUniqueChar.o \
         $(OBJ)/calc3OrderedNumbers.o \
         $(OBJ)/coinsInLine.o \
         $(OBJ)/twoArrayKthElem.o \
         $(OBJ)/slidingWinMax.o \
         $(OBJ)/convertToTitle.o \
         $(OBJ)/addTwoNumbers.o \
         $(OBJ)/trailingZeros.o \
         $(OBJ)/stringPalinDrome.o \
         $(OBJ)/zigZag.o \
         $(OBJ)/fourSum.o \
         $(OBJ)/findSubString.o
	
all: leetcode.dll \
     testStringMatch.exe \
     testBinaryTree.exe \
     testBinarySearchTree.exe \
     testMaxDistance.exe \
     testPreInOrderBinaryTree.exe \
     testMinPartition.exe \
     testCycleLinkedList.exe \
     testWordBreak.exe \
     testTwoArrayMedian.exe \
     testLongestUniqueChar.exe \
     testCalc3OrderedNumbers.exe \
     testCoinsInLine.exe \
     testTwoArrayKthElem.exe \
     testSlidingWindow.exe \
     testConvertToTitle.exe \
     testAddTwoNumbers.exe \
     testTrailingZeros.exe \
     testPalindrome.exe \
     testZigZag.exe \
     testFourSum.exe \
     testFindSubString.exe \
     install

$(OBJ)/%.o : $(SRC)/%.cpp
	$(CXX) $(CPPFLAGS) -o $@ $<

leetcode.dll : $(OBJFILES)
	$(CXX) -shared -o $@ $^

testStringMatch.exe : $(OBJ)/testStringMatch.o 
	$(CXX) $(LDFLAG) -o $@ $^

testBinaryTree.exe : $(OBJ)/testBinaryTree.o
	$(CXX) $(LDFLAG) -o $@ $^

testBinarySearchTree.exe : $(OBJ)/testBinarySearchTree.o 
	$(CXX) $(LDFLAG) -o $@ $^

testMaxDistance.exe : $(OBJ)/testMaxDistance.o
	$(CXX) $(LDFLAG) -o $@ $^

testPreInOrderBinaryTree.exe : $(OBJ)/testPreInOrderBinaryTree.o
	$(CXX) $(LDFLAG) -o $@ $^

testMinPartition.exe : $(OBJ)/testMinPartition.o
	$(CXX) $(LDFLAG) -o $@ $^

testCycleLinkedList.exe : $(OBJ)/testCycleLinkedList.o
	$(CXX) $(LDFLAG) -o $@ $^

testWordBreak.exe : $(OBJ)/testWordBreak.o
	$(CXX) $(LDFLAG) -o $@ $^

testTwoArrayMedian.exe : $(OBJ)/testTwoArrayMedian.o
	$(CXX) $(LDFLAG) -o $@ $^

testLongestUniqueChar.exe : $(OBJ)/testLongestUniqueChar.o 
	$(CXX) $(LDFLAG) -o $@ $^

testCalc3OrderedNumbers.exe : $(OBJ)/testCalc3OrderedNumbers.o 
	$(CXX) $(LDFLAG) -o $@ $^

testCoinsInLine.exe : $(OBJ)/testCoinsInLine.o 
	$(CXX) $(LDFLAG) -o $@ $^

testTwoArrayKthElem.exe : $(OBJ)/testTwoArrayKthElem.o
	$(CXX) $(LDFLAG) -o $@ $^

testSlidingWindow.exe : $(OBJ)/testSlidingWindow.o
	$(CXX) $(LDFLAG) -o $@ $^

testConvertToTitle.exe : $(OBJ)/testConvertToTitle.o
	$(CXX) $(LDFLAG) -o $@ $^

testAddTwoNumbers.exe : $(OBJ)/testAddTwoNumbers.o
	$(CXX) $(LDFLAG) -o $@ $^

testTrailingZeros.exe : $(OBJ)/testTrailingZeros.o
	$(CXX) $(LDFLAG) -o $@ $^

testPalindrome.exe : $(OBJ)/testPalindrome.o
	$(CXX) $(LDFLAG) -o $@ $^

testZigZag.exe : $(OBJ)/testZigZag.o
	$(CXX) $(LDFLAG) -o $@ $^

testFourSum.exe : $(OBJ)/testFourSum.o
	$(CXX) $(LDFLAG) -o $@ $^

testFindSubString.exe : $(OBJ)/testFindSubString.o
	$(CXX) $(LDFLAG) -o $@ $^

install:
	mv *.exe $(EXE)/.
	mv *.dll $(EXE)/.

clean:
	rm -rf 	$(OBJ)/*.o $(EXE)/*.exe $(EXE)/*.dll
